package w83b.w83bOperacionesPaso.w83bActas;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;

import w83b.w83bBeans.W83bActasBean;
import w83b.w83bBeans.W83bListaDelegadosBean;
import w83b.w83bBeans.W83bListaDiferenciasBean;
import w83b.w83bBeans.W83bListaEscrutiniosBean;
import w83b.w83bUtilidades.W83bUtilidadesComunes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83bTablaAgrupacionesOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83bTablaActasNuevasOutOPAction extends Q70ActionPasoOP{

	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		//Guardamos la accion en el contexto
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		W83bActasBean actasBean = (W83bActasBean)contexto.get("w83bNuevaActaBean");
		String action = (String)contexto.get("action");
		HashMap lista=new HashMap();
		Class clase=null;
		List listaVariables = new ArrayList();
		
		boolean tipoLista=false;
		String varClave = "sindicato";
			if(action.equalsIgnoreCase("addEscrutiniosC1")
					||action.equalsIgnoreCase("editEscrutiniosC1")
					||action.equalsIgnoreCase("borrarEscrutiniosC1")
					||action.equalsIgnoreCase("findEscrutiniosC1")
					||action.equalsIgnoreCase("cargadaEscrutiniosC1")){
				if(contexto.get("w83bListaEscrutiniosC1")!=null){
					lista=(HashMap)contexto.get("w83bListaEscrutiniosC1");
				}
				clase=W83bListaEscrutiniosBean.class;
				tipoLista=true;
				listaVariables = new ArrayList();
				listaVariables.add("sindicato");
				listaVariables.add("descripcionSindicato");
				listaVariables.add("hombres");
				listaVariables.add("mujeres");
				listaVariables.add("numVotos");
			}
			else if(action.equalsIgnoreCase("addEscrutiniosC2")
					||action.equalsIgnoreCase("editEscrutiniosC2")
					||action.equalsIgnoreCase("borrarEscrutiniosC2")
					||action.equalsIgnoreCase("findEscrutiniosC2")
					||action.equalsIgnoreCase("cargadaEscrutiniosC2")){
				if(contexto.get("w83bListaEscrutiniosC2")!=null){
					lista=(HashMap)contexto.get("w83bListaEscrutiniosC2");
				}
				clase=W83bListaEscrutiniosBean.class;
				tipoLista=true;
				listaVariables = new ArrayList();
				listaVariables.add("sindicato");
				listaVariables.add("descripcionSindicato");
				listaVariables.add("hombres");
				listaVariables.add("mujeres");
				listaVariables.add("numVotos");
			}
			else if(action.equalsIgnoreCase("addDiferenciasC1")
					||action.equalsIgnoreCase("editDiferenciasC1")
					||action.equalsIgnoreCase("borrarDiferenciasC1")
					||action.equalsIgnoreCase("findDiferenciasC1")
					||action.equalsIgnoreCase("cargadaDiferenciasC1")){
				if(contexto.get("w83bListaDiferenciasC1")!=null){
					lista=(HashMap)contexto.get("w83bListaDiferenciasC1");
				}
				clase=W83bListaDiferenciasBean.class;
				tipoLista=true;
				listaVariables = new ArrayList();
				listaVariables.add("sindicato");
				listaVariables.add("descripcionSindicato");
				listaVariables.add("hombres");
				listaVariables.add("mujeres");
				
			}
			else if(action.equalsIgnoreCase("addDiferenciasC2")
					||action.equalsIgnoreCase("editDiferenciasC2")
					||action.equalsIgnoreCase("borrarDiferenciasC2")
					||action.equalsIgnoreCase("findDiferenciasC2")
					||action.equalsIgnoreCase("cargadaDiferenciasC1")){
				if(contexto.get("w83bListaDiferenciasC2")!=null){
					lista=(HashMap)contexto.get("w83bListaDiferenciasC2");
				}
				clase=W83bListaDiferenciasBean.class;
				tipoLista=true;
				listaVariables = new ArrayList();
				listaVariables.add("sindicato");
				listaVariables.add("descripcionSindicato");
				listaVariables.add("hombres");
				listaVariables.add("mujeres");
				
			}
			else if(action.equalsIgnoreCase("addDelegado")
					||action.equalsIgnoreCase("borrarDelegado")
					||action.equalsIgnoreCase("editDelegados")
					||action.equalsIgnoreCase("findDelegados")
					||action.equalsIgnoreCase("cargadaDelegado")){
				if(contexto.get("w83bListaDelegados")!=null){
					lista=(HashMap)contexto.get("w83bListaDelegados");
				}
				clase=W83bListaDelegadosBean.class;
				tipoLista=true;
				listaVariables = new ArrayList();
				
				listaVariables.add("colegio");
				listaVariables.add("dni");
				listaVariables.add("apellido1");
				listaVariables.add("apellido2");
				listaVariables.add("nombre");
				listaVariables.add("sexo");
				listaVariables.add("sindicato");
				listaVariables.add("fechaAlta");
				listaVariables.add("fechaBaja");
				listaVariables.add("motivoBaja");
				listaVariables.add("dniSustituto");
				
				varClave = "dni";
			}
			if(tipoLista){
				
				int num_paginas = lista.size()/Integer.parseInt(actasBean.getTotal());
				
				
				if(lista.size()%Integer.parseInt(actasBean.getTotal())>0){
					num_paginas++;
				}
				actasBean.setRows(String.valueOf(num_paginas));
				
				
//				Collections.sort(lista,new W83bListaDelegadosBeanComparator());
				
				Map miTreeMap = new TreeMap();
				miTreeMap.putAll(lista);
				
				
				String jJson = W83bUtilidadesComunes.procesarHashMap(lista,listaVariables,varClave,clase, actasBean);
				response.setContentType("text/javascript;charset=iso-8859-1");
				response.setHeader("Pragma", "cache");
				response.setHeader("Expires", "0");
				response.setHeader("Cache-Control", "private");
				response.setStatus(HttpServletResponse.SC_OK);
				PrintWriter out = response.getWriter();
				out.print(jJson);
				out.flush();
			}
			else
			{
				JSONObject jsonObject = new JSONObject();
				jsonObject.put("existe", "no");
				jsonObject.put("registrada", "si");
				jsonObject.put("baja", "no");
				jsonObject.put("codCentroTotal", "");
				jsonObject.put("actaTotal", "si");
				jsonObject.put("version", actasBean.getVersion());
				jsonObject.put("validada", actasBean.getValidada());
				if(request.getParameter("action").equalsIgnoreCase("findActas")){
					if(actasBean.getDuplicada().equals("true")){
						if(StringUtils.isEmpty(actasBean.getNumRegDefinitivo())){
							jsonObject.put("registrada", "no");
						}
						if(!StringUtils.isEmpty(actasBean.getFechaBaja())){
							jsonObject.put("baja", "si");
						}
						if(!StringUtils.isEmpty(actasBean.getCodCentroTrabajo())){
							jsonObject.put("codCentroTotal", actasBean.getCodCentroTrabajo());
						}
						if(!StringUtils.isEmpty(actasBean.getNumActaTotal())){
							jsonObject.put("actaTotal", "no");
						}
						jsonObject.put("existe", "si");
					}
				}
				response.setContentType("text/javascript;charset=iso-8859-1");
				response.setHeader("Pragma", "cache");
				response.setHeader("Expires", "0");
				response.setHeader("Cache-Control", "private");
				response.setStatus(HttpServletResponse.SC_OK);
				PrintWriter out = response.getWriter();
				out.print(jsonObject.toString());
				out.flush();
		}
			
	
		
		return null;
	}
	


}
